package com.example.demo.constants;


import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

/**
 * 签到key
 */
public class SignRedisKeyBuilder {

    private static String charset = StandardCharsets.UTF_8.name();

    /**
     * 用于 redis 签到 key 前缀，默认为： u:sign:
     */
    private static String signKeyPrefix = "user:sign:";



    /**
     * 签到key 设计 user:sign:用户id:月份
     *
     * @param uid
     * @param localDate
     * @return
     */
    public static byte[] buildSignByteKey(String uid, LocalDate localDate) {
        return (signKeyPrefix + String.format("%s:%s", uid, formatDate(localDate))).getBytes();
    }




    /**
     * 格式化日期到 yyyyMM 模式
     * @param date  date
     * @return  返回 yyyyMM 模式的日期字符串
     */
    public static String formatDate(LocalDate date) {
        return formatDate(date, "yyyyMM");
    }

    /**
     * 根据指定的 pattern 格式化日期
     * @param date  date
     * @param pattern   日期格式
     * @return  返回指定的 pattern 模式的日期字符串
     */
    public static String formatDate(LocalDate date, String pattern) {
        return date.format(DateTimeFormatter.ofPattern(pattern));
    }


}
